package com.dubbo.framework.protocol.http;

import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONObject;
import com.dubbo.framework.Invocation;
import lombok.extern.slf4j.Slf4j;

/**
 * 服务消费者 调用服务提供者 使用http
 *
 * @author by Mr. Li 2021/4/29 9:53
 */
@Slf4j
public class HttpClient {
    /**
     * 可以根据具体的版本进行动态设置http客户端
     *
     * @param hostName   ip
     * @param port       端口号
     * @param invocation invocation
     * @return String
     */
    public String send(String hostName, Integer port, Invocation invocation) {
        // 在这里应该使用兼容集群的方式
        log.info("进行远程调用。。。。。");

        return HttpUtil.post(hostName + ":" + port, JSONObject.toJSONString(invocation));
    }

    /**
     * 重载方法，通过zk实现负载均衡，并且将所有上线服务都缓存到本地
     *
     * @param invocation invocation
     * @return Object
     */
    public Object send(Invocation invocation) {
        log.info(">>>>>>>>>>>>>>>>>>>>pull zookeeper config...");
        
        return null;
    }
}
